[新機能] CloudWatch EventsがAmazon SQSのQueueをターゲット指定できるようになりました
はじめに
今回ご紹介する新機能はこちら!
CloudWatch Eventsは、これまではAWS Lambda、Amazon Kinesis Stream、Amazon SNS、Bullet-inをターゲットとして指定することが出来ました。今回の新機能によって、ターゲットにSQS Queueを指定できるようになりました!
ってことでとりあえずやってみました。
やってみた
SQS Queueを作っておきます。今回は[job]という名前にしました。
AWS管理コンソールのCloudWatch画面で、[Events]をクリックし、[Create Rule]ボタンをクリックします。
[Event Selector]は[Schedule]とし、5分ごとにしました。[Targets]は今回の新機能であるSQS Queueを指定し、上記のjobというQueueを指定しています。設定したら[Configure details]ボタンをクリックします。
[Name]は適当につけます。[Create rule]ボタンをクリック。
すると、以下のようにjobキューにMessageが追加されました!
5分待つと...Messageは増えています。
実際にどんなMessageが入っているか確認しました。"detail-type"が"Scheduled Event"となっています。
$ aws sqs receive-message --queue-url https://sqs.ap-northeast-1.amazonaws.com/XXXXXXXXXXXX/job { "Messages": [ { "Body": "{\"version\":\"0\",\"id\":\"c5dcf898-2225-4b95-b2ec-foobar\",\"detail-type\":\"Scheduled Event\",\"source\":\"aws.events\",\"account\":\"XXXXXXXXXXXX\",\"time\":\"2016-03-31T05:08:57Z\",\"region\":\"ap-northeast-1\",\"resources\":[\"arn:aws:events:ap-northeast-1:XXXXXXXXXXXX:rule/sendQueue\"],\"detail\":{}}", "ReceiptHandle": "AQEBPwH7sCEUByU92Ajg51WNBnn11sdJMYuRyDxeeePJ9UcPqSOpZl1GlUd7HN4iKErpJVbDVD05b4qAXG6sjhK/ItNHdgULNlwKCDVlqueH7pcuUgoECqujYoMUo4Ewgf4vt8GQGkcq+me+b8t7zMJi/0+t6inQgzVSPBL0DlUZHFKqOTncic7c+VtaHhv75D4/NDroOWp4i9LWYXaQ3m/gql4IXj90aLFH4V29aKpL2UehDM6UFhQAyxnOa1serFvaJ/foobar/xfiReuO4x1L5WYckpBIH4GKPLkiHmvgS4qiDINmHd/6atpkG8teX/foobar", "MD5OfBody": "6626956141fe6d29XXXXXXXXXX", "MessageId": "fbfb4022-fde9-4dbd-8f70-XXXXXXXXXX" } ] }
さいごに
単純にスケジュールでSQS QueueにMessageを入れることも出来ますし、AWS APIを起点にすることもできるので、例えばS3にファイルがアップロードされたらWorkerインスタンスに処理させるようなことも出来ます。SQSをターゲットに指定できるようになったことで、更に利用の幅が広がりましたね!